#include <iostream>
#include <algorithm>

using namespace std;

const int N = 2e5 + 10;

typedef long long LL;

//B = A - C
//1.先把整个数组排序
//2.通过枚举A，然后查找有多少个B的形式
//	用二分查找快速找出B的起始位置以及终止位置即可

int n, c;
LL a[N];

// int find(int b)
// {
// 	int left = 1, right = n;
// 	//找大于等于b的最小值
// 	while(left < right)
// 	{
// 		int mid = left + (right - left) / 2;
// 		if(a[mid] < b) left = mid + 1;
// 		else right = mid;
// 	}
// 	if(a[left] < b) return 0;
// 	int tmp = left;

// 	//找小于等于b的最大值
// 	left = 1, right = n;
// 	while(left < right)
// 	{
// 		int mid = left + (right - left + 1) / 2;
// 		if(a[mid] <= b) left = mid;
// 		else right = mid - 1;
// 	}
// 	if(a[left] > b) return 0;

// 	return right - tmp + 1 > 0 ? right - tmp + 1 : 0;
// }

int main()
{
	cin >> n >> c;
	for(int i = 1; i <= n; i++) cin >> a[i];
	sort(a+1, a+n+1);

	LL ret = 0;
	// for(int i = 1; i <= n; i++)
	// {
	// 	ret += find(a[i] - c);
	// }
	for(int i = 2; i <= n; i++)
	{
		LL b = a[i] - c;
		ret += upper_bound(a + 1, a + i, b) - lower_bound(a + 1, a + i, b);
	}
	cout << ret << endl;

	return 0;
}